export function parseTime(time, cFormat) {
  if (arguments.length === 0) {
    return null
  }
  const format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}'
  let date
  if (typeof time === 'object') {
    date = time
  } else {
    if (('' + time).length === 10) time = parseInt(time) * 1000
    date = new Date(time)
  }
  const formatObj = {
    y: date.getFullYear(),
    m: date.getMonth() + 1,
    d: date.getDate(),
    h: date.getHours(),
    i: date.getMinutes(),
    s: date.getSeconds(),
    a: date.getDay()
  }
  const timeStr = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {
    let value = formatObj[key]
    if (key === 'a') return ['一', '二', '三', '四', '五', '六', '日'][value - 1]
    if (result.length > 0 && value < 10) {
      value = '0' + value
    }
    return value || 0
  })
  return timeStr
}

export function formatTime(time, option) {
  time = +time * 1000
  const d = new Date(time)
  const now = Date.now()

  const diff = (now - d) / 1000

  if (diff < 30) {
    return '刚刚'
  } else if (diff < 3600) {
    // less 1 hour
    return Math.ceil(diff / 60) + '分钟前'
  } else if (diff < 3600 * 24) {
    return Math.ceil(diff / 3600) + '小时前'
  } else if (diff < 3600 * 24 * 2) {
    return '1天前'
  }
  if (option) {
    return parseTime(time, option)
  } else {
    return (
      d.getMonth() + 1 + '月' + d.getDate() + '日' + d.getHours() + '时' + d.getMinutes() + '分'
    )
  }
}

// 跳转到OA登录
export function redirectToOA() {
  // const oa = location.hostname.replace(/\w+\./, 'oa.')
  // location.href = 'http://' + oa + '/login/?backurl=' + location.href
}

export function getPageTitle(pageTitle) {
  if (pageTitle) {
    return `${pageTitle} - 灰兔智能管理系统`
  }
  return `灰兔智能管理系统`
}

/**
 * 使用 toString 来获取准确的应用类型
 * @param {*} target
 * @return {*}
 */
export const getType = (target) => {
  return Object.prototype.toString.call(target)
}

export const mapTag = '[object Map]'
export const setTag = '[object Set]'
export const arrayTag = '[object Array]'
export const objectTag = '[object Object]'
export const nullTag = '[object Null]'
export const undefinedTag = '[object Undefined]'
export const boolTag = '[object Boolean]'
export const dateTag = '[object Date]'
export const errorTag = '[object Error]'
export const numberTag = '[object Number]'
export const regexpTag = '[object RegExp]'
export const stringTag = '[object String]'
export const symbolTag = '[object Symbol]'

/**
 * 判断是否为引用类型，主要考虑 function 和 null 两种特殊数据类型
 * @param {*} target
 * @return {*}
 */
export const isObject = (target) => {
  const type = typeof target
  return target !== null && (type === 'object' || type === 'function')
}

/**
 * 一个空方法，返回入参本身或空对象
 */
export const noop = () => {}
